package com.ssy.lingxi.transaction.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.transaction.api.dto.request.*;
import com.ssy.lingxi.transaction.api.dto.response.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import javax.validation.Valid;
import java.util.List;

/**
* 交易能力-询价报价 - 询价报价
* @author wrc
* @date 2020/8/12
*/
public interface IQuoteService {

    /**
    * 交易能力-询价报价-询价单查询列表
    * @author wrc
    * @date 2020/8/13
    */
    Wrapper<PageData<ProductQuotationListResponse>> productQuotationList(ProductQuotationListRequest request, UserLoginCacheDTO sysUser);

    /**
     * 询价报价-历史报价单列表查询
     */
    Wrapper<PageData<HistoryQuoteListResponse>> getHistoryQuoteList(Long commoditySkuId, PageVO pageVO, UserLoginCacheDTO sysUser);

    /**
    * 交易中心-询价报价-报价单详情
    * @author wrc
    * @date 2020/8/14
    */
    Wrapper<ProductQuotationDetailsResponse> productQuotationDetails(ProductQuotationDetailsRequest request, UserLoginCacheDTO sysUser);

    /**
    * 交易中心-询价报价-新增询价报价单
    * @author wrc
    * @date 2020/8/14
    */
    Wrapper productQuotationAdd(ProductQuotationAddRequest request, UserLoginCacheDTO sysUser);

    /**
    *  交易中心-询价报价-修改询价报价单
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper productQuotationUpdate(ProductQuotationUpdateRequest request, UserLoginCacheDTO sysUser);

    /**
    * 交易中心-询价报价-删除询价报价单
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper productQuotationDelete(ProductQuotationDeleteRequest request, UserLoginCacheDTO sysUser);

    /**
    * 批量删除
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper productQuotationDeleteAll(ProductQuotationDeleteAllRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心-商品询价-提交审核
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper productQuotationSubmit(ProductQuotationSubmitRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心-商品询价-批量提交审核
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper productQuotationSubmitAll(ProductQuotationSubmitAllRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心-询价报价-待新增报价单列表查询
    * @author wrc
    * @date 2020/8/17
    */
    Wrapper<PageData<ProductQuotationListResponse>> stayProductQuotationList(ProductQuotationListRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心-询价报价-待审核报价单列表查询
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper<PageData<ProductQuotationListResponse>> auditProductQuotationList(ProductQuotationListRequest request,UserLoginCacheDTO sysUser);

    /**
    *交易中心-商品询价-待审核报价单一级
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper productQuotationAuditSubmit(ProductQuotationSubmitRequest request,UserLoginCacheDTO sysUser);

    /**
     *交易中心-商品询价-批量审核报价单一级
     * @author wrc
     * @date 2020/8/18
     */
    Wrapper productQuotationAuditSubmitAll(ProductQuotationSubmitAllRequest request,UserLoginCacheDTO sysUser);

    /**
    *交易中心-询价报价-待审核报价单列表查询（二级）
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper<PageData<ProductQuotationListResponse>> auditProductQuotationListTwo(ProductQuotationListRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心 询价报价-待审核报价单（二级）
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper productQuotationAuditSubmitTwo(ProductQuotationSubmitRequest request,UserLoginCacheDTO sysUser);

    /**
    * 交易中心-商品询价-批量审核报价单（二级）
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper productQuotationAuditSubmitAllTwo(@Valid  @RequestBody  ProductQuotationSubmitAllRequest request,UserLoginCacheDTO sysUser);

    /**
    *交易中心-询价报价-待提交报价单列表查询
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper<PageData<ProductQuotationListResponse>> toSubmitProductQuotationListTwo(ProductQuotationListRequest request,UserLoginCacheDTO sysUser);

    /**
    *交易中心-商品询价-提交报价单
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper productQuotationToSubmit(ProductQuotationSubmitRequest request,UserLoginCacheDTO sysUser);

    /**
    *交易中心-商品询价-批量审核报价单
    * @author wrc
    * @date 2020/8/18
    */
    Wrapper productQuotationToSubmitAll(ProductQuotationSubmitAllRequest request,UserLoginCacheDTO sysUser);

    /**
    * 查询对应询价单号
    * @author wrc
    * @date 2020/10/20
    */
    Wrapper<PageData<CorrespondingInquiryNumberResponse>> correspondingInquiryNumber(CorrespondingInquiryNumberRequest request, UserLoginCacheDTO sysUser);

    /**
    * 查询报价单商品详情列表
    * @author wrc
    * @date 2020/11/6
    */
    Wrapper<PageData<QuotationtProductListResponse>> quotationtProductList(QuotationtProductListRequest request, UserLoginCacheDTO sysUser);

    /**
     * 查询询价报价内部工作流程状态与值
     * @author wrc
     * @date 2020/7/28
     */
    Wrapper<List<QuotationExternalStateEnumResponse>> getQuotationtInquiryInteriorStateEnum();

    /**
    * 查询询价单详情
    * @author wrc
    * @date 2020/11/21
    */
     Wrapper<InquiryListDetailsResponse> inquiryListDetails(InquiryListDetailsRequest request,UserLoginCacheDTO sysUser);

    /**
     * 小程序-业务员-询价报价-报价单审核列表（全部、待提交审核、待审核一级、待审核二级、待提交）
     *
     * @param request
     * @param sysUser
     * @return
     */
    Wrapper<PageData<AppletProductQuotationListResponse>> quotationAuditList(AppletProductQuotationListRequest request, UserLoginCacheDTO sysUser);

    /**
     * 所有报价单各个状态数量
     *
     * @param sysUser
     * @return
     */
    Wrapper<AppletProductQuotationSumResponse> quotationSum(UserLoginCacheDTO sysUser);


    /***********************************************   内部接口   *****************************************************************/
    /**
     * 通过报价单号查询询价单商品详情
     */
    List<InquiryListProductResponse> getInquiryProduct(@RequestParam(name = "quotationNo")String quotationNo);

    /**
     * 通过商品skuId批量查询商品对应的供应商最后一次报价
     */
    List<InquiryProductPriceResponse> getInquiryProductPrice(InquiryProductPriceRequest inquiryProductPriceRequest);
}
